# Spring MVC Framework
์คํ๋ง MVC ํ๋ ์์ํฌ๊ฐ ๋์ํ๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ url์ ํตํด ์์ฒญํ ๋ ์ผ์ด๋๋ ์คํ๋ง ํ๋ ์์ํฌ์ ๋์์ ๊ทธ๋ฆผ์ผ๋ก ํํํ ๊ฒ์ด๋ค.
# MVC ์งํ ๊ณผ์
- ํด๋ผ์ด์ธํธ๊ฐ url์ ์์ฒญํ๋ฉด, ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋ง์ผ๋ก request๊ฐ ๋ณด๋ด์ง๋ค.
Dispatcher Servlet
์ด request๋ฅผ ๋ฐ์ผ๋ฉด,Handler Mapping
์ ํตํด ํด๋น url์ ๋ด๋นํ๋ Controller๋ฅผ ํ์ ํ ์ฐพ์๋ธ๋ค.- ์ฐพ์๋ธ
Controller
๋ก request๋ฅผ ๋ณด๋ด์ฃผ๊ณ , ๋ณด๋ด์ฃผ๊ธฐ ์ํด ํ์ํ Model์ ๊ตฌ์ฑํ๋ค. Model
์์๋ ํ์ด์ง ์ฒ๋ฆฌ์ ํ์ํ ์ ๋ณด๋ค์ Database์ ์ ๊ทผํ์ฌ ์ฟผ๋ฆฌ๋ฌธ์ ํตํด ๊ฐ์ ธ์จ๋ค.- ๋ฐ์ดํฐ๋ฅผ ํตํด ์ป์ Model ์ ๋ณด๋ฅผ Controller์๊ฒ response ํด์ฃผ๋ฉด, Controller๋ ์ด๋ฅผ ๋ฐ์ Model์ ์์ฑ์์ผ Dispatcher Servlet์๊ฒ ์ ๋ฌํด์ค๋ค.
- Dispatcher Servlet์
View Resolver
๋ฅผ ํตํด request์ ํด๋นํ๋ view ํ์ผ์ ํ์ ํ ๋ฐ์๋ธ๋ค. - ๋ฐ์๋ธ View ํ์ด์ง ํ์ผ์ Model์ ๋ณด๋ธ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ผ ํ์ด์ง๋ฅผ ์์ฑ์์ผ ๋ฐ์๋ธ๋ค.
- ์์ฑ๋ View ํ์ผ์ ํด๋ผ์ด์ธํธ์ responseํ์ฌ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
# ๊ตฌ์ฑ ์์
# Dispatcher Servlet
๋ชจ๋ request๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ฌ ์ปจํธ๋กค๋ฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ http ํ๋กํ ์ฝ์ ํตํด ๋ค์ด์ค๋ ๋ชจ๋ request์ ๋ํด ์ ์ผ ์๋จ์์ ์ค์์ง์ค์์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค.
๊ธฐ์กด์๋ web.xml์ ๋ชจ๋ ๋ฑ๋กํด์ค์ผ ํ์ง๋ง, ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ด ๋ชจ๋ request๋ฅผ ํธ๋ค๋งํ๋ฉด์ ์์ ์ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋ค.
# Handler Mapping
ํด๋ผ์ด์ธํธ์ request url์ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ์ฒ๋ฆฌํด์ผ ํ ์ง ์ฐพ์์ Dispatcher Servlet์๊ฒ ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ค.
์ปจํธ๋กค๋ฌ ์์์ url์ ๋งคํ์ํค๊ธฐ ์ํด
@RequestMapping
์ ์ฌ์ฉํ๋๋ฐ, ํธ๋ค๋ฌ๊ฐ ์ด๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํ๋ค.
# Controller
์ค์ง์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณณ์ด๋ค. Dispatcher Servlet์ด ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ผ๋ฉด, ์ด ๊ณณ์ ๋ฐฑ์๋ ์ปจํธ๋กค๋ฌ๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ชจ๋ธ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ Dispatcher Servlet์๊ฒ ๋ฐํํด์ค๋ค.
# View Resolver
์ปจํธ๋กค๋ฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค view๋ฅผ ๊ฒฐ์ ํด์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ค. ๋ค์ํ ์ข ๋ฅ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๊ฒ ํ์ฉํ๋ฉด ๋๋ค.